#include<iostream>
#include<signal.h>
#include<cstring>
#include<unistd.h>
using namespace std;

//问题1：pending位图，什么时候从1->0
//执行handler方法前
//问题2：信号被处理的时候，对应的信号也会被添加到block表中，防止信号捕捉被嵌套调用

void handler(int signo)
{
    cout<<"catch a signal,signal number : "<<signo<<endl;
}

int main()
{
    struct sigaction act,oact;
    memset(&act,0,sizeof(act));
    memset(&oact,0,sizeof(oact));

    act.sa_handler =handler;
    sigaction(2,&act,&oact);//信号捕捉

    while(true)
    {
        cout<<"I am a process: "<<getpid()<<endl;
        sleep(1);
    }
}